package com.ljx.offer;

import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;

/**
 * @author 李捷禧
 * Date: 2023/3/17
 * ClassName: C_32
 */

public class C_32 {
    private List<List<Integer>> lists;

    /**
     *
     * @param root
     * @return
     */
    public List<List<Integer>> levelOrder(TreeNode root) {
        lists = new LinkedList<>();
        isNum(0,root);
        return lists;
    }

    /**
     * 解析：是按照每一层深度来添加叶子结点
     * 一开始来，先添加一个数组链表，所以深度就是0，depth！= 链表数组长度，所以是先执行  lists.get(depth).add(root.val);
     * 以此类推，深度相同的就存在一个链表里面
     * @param depth
     * @param root
     */
    private void isNum(int depth, TreeNode root) {
        if(root == null) return;
        if(depth == lists.size()) lists.add(new LinkedList<>());
        lists.get(depth).add(root.val);
        isNum(depth+1,root.left);
        isNum(depth+1,root.right);
    }


    class TreeNode {
        int val;
        TreeNode left;
        TreeNode right;
        TreeNode(int x) { val = x; }
    }
}
